package com.yuanhua.sim.client.decoder;

import com.alibaba.fastjson.JSON;
import com.yuanhua.core.base.entity.BaseBean;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;
import lombok.extern.slf4j.Slf4j;

/**
 * 编码
 * @author 宋国祥
 */
@Slf4j
public class MyEncoder extends MessageToByteEncoder<BaseBean> {

    @Override
    protected void encode(ChannelHandlerContext channelHandlerContext, BaseBean baseBean, ByteBuf byteBuf) throws Exception {
        //1.把实体序列化成字节数字
        byte[] bytes= JSON.toJSONBytes(baseBean);
        log.info("进行编码");
        //2.根据协议组装数据
        //标识（4个字节）
        byteBuf.writeInt(baseBean.getTag());
        //指令（1个字节）
        byteBuf.writeByte(baseBean.code());
        //长度（4个字节）
        byteBuf.writeInt(bytes.length);
        byteBuf.writeBytes(bytes);
    }
}